package ru.susu.algebra.matrix;

import ru.susu.algebra.transformers.IObjectTransformer;

/**
 * Преобразует матрицу. В результат попадают только указанные в конструкторе строки.
 *
 * @author akargapolov
 * @since: 03.05.2010
 */
public class MatrixRowsExtractor implements IObjectTransformer<Matrix>
{
	private Integer[] _rows;

	/**
	 * Конструктор
	 * @param rows строки, которые будут попадать в результат преобразования
	 */
	public MatrixRowsExtractor(Integer[] rows)
	{
		_rows = rows;
	}

	/**
	 * Преобразует матрицу. В результат попадают только указанные в конструкторе строки
	 * @param matrix исходная матрица
	 * @return матрица из указанных строк
	 */
	@Override
	public Matrix transformObject(Matrix matrix)
	{
		Matrix result = new Matrix(0, matrix.getCols());
		for (int row : _rows)
		{
			result.addRow(matrix.getRow(row));
		}
		return result;
	}

}
